<?php
Zend_Loader::loadClass("Application_Ajax_Server_Function");
Zend_Loader::loadClass('Panes');

class SavePane extends Application_Ajax_Server_Function
{
	public function call() {
		
		foreach ($this->_params as &$param) {
			$param = urldecode($param);
		}
		
		$esito = null;
		Model::getDefaultAdapter()->beginTransaction();
		$scenario = $this->_getParam('id', 0) ? "update" : "new";
		try {
			$vetri = new Panes();
			$vetro = ($scenario == "new") ? $vetri->createRow() : $vetri->fetchRow($vetri->select()->where('id = ?', $this->_getParam('id')));
			$vetro->name = $this->_getParam('pane_name', '');
			$vetro->source = $this->_getParam('pane_source', '');
			$vetro->description = $this->_getParam('pane_descr', '');
			$vetro->id_category = $this->_getParam('pane_category_id', null);
			$vetro->igdbname = $this->_getParam('pane_igdbname', '');
			$vetro->nfrcid = $this->_getParam('pane_nfrcid', 0);
			$vetro->datatype = $this->_getParam('pane_datatype', '');
			$vetro->thickness = $this->_getParam('pane_thickness', 0);
			$vetro->conductivity = $this->_getParam('pane_conductivity', 0);
			$vetro->solartransmittance = $this->_getParam('pane_solartransmittance', 0);
			$vetro->frontsolarreflectance = $this->_getParam('pane_frontsolarreflectance', 0);
			$vetro->backsolarreflectance = $this->_getParam('pane_backsolarreflectance', 0);
			$vetro->visibletransmittance = $this->_getParam('pane_visibletransmittance', 0);
			$vetro->frontvisiblereflectance= $this->_getParam('pane_frontvisiblereflectance', 0);
			$vetro->backvisiblereflectance = $this->_getParam('pane_backvisiblereflectance', 0);
			$vetro->infraredtransmittance = $this->_getParam('pane_infraredtransmittance', 0);
			$vetro->frontinfraredreflectance = $this->_getParam('pane_frontinfraredreflectance', 0);
			$vetro->backinfraredreflectance = $this->_getParam('pane_backinfraredreflectance', 0);
			$vetro->spectraldata = $this->_getParam('pane_spectraldata', 0);
			$vetro->status = 1;

			$vetro->save();
			if ($scenario == "new") {
				$id_vetro = $vetri->getAdapter()->lastInsertId();
			} else {
				$id_vetro = $this->_getParam('id');
			}

			Model::getDefaultAdapter()->commit();
			if ($scenario == "new") {
				$msg = "La struttura trasparente è stata aggiunta con successo al database";
			} else {
				$msg = "Le proprietà della struttura trasparente sono state aggiornate con successo";
			}
			$esito = true;

		} catch (Exception $ex) {
			$esito = false;
			Model::getDefaultAdapter()->rollBack();
			if ($scenario == "new") {
				echo $ex->getMessage();
				$msg = "Si è verificato un errore durante l'inserimento della nuova struttura trasparente nel database";
			} else {
				$msg = "Si è verificato un errore durante l'aggiornamento delle proprietà della struttura trasparente nel database";
			}
		}

		$info = array ("esito" => $esito, "id" => $id_vetro, "messages" => $msg);
		return $info;
	}
}